package app.android.kdictionary.Util;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import app.android.kdictionary.enums.NetworkConnectionType;

public class CheckNetworkConnection {

	/*
	 * 3G나 WIFI 연결을 체크한다.
	 * 연결이 되어있지 않으면 -1
	 * 연결이 되어있으나 사용할 수 없는 상태이면 -2
	 * 정상적으로 연결되고 동작한다면 0을 리턴한다.
	 */
	
	/**
	 * @param activity
	 * @return
	 */
	
	public static NetworkConnectionType checkNetworkConnection(Activity activity) {
		
		ConnectivityManager cm = (ConnectivityManager)activity.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo wifiNI = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
		NetworkInfo mobileNI = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
		boolean isWifiAvail = wifiNI.isAvailable();
		boolean isWifiConn = wifiNI.isConnectedOrConnecting();
		boolean isMobileAvail = mobileNI.isAvailable();
		boolean isMobileConn = mobileNI.isConnectedOrConnecting();

		
		if( isWifiConn ) {
			if( isWifiAvail ) {
				return NetworkConnectionType.NETWORK_AVAIL;	
			}
			else {
				if( isMobileConn ) {
					if( isMobileAvail )  {
						return NetworkConnectionType.NETWORK_CHARGE;
					}
					else {
						return NetworkConnectionType.NETWORK_ERROR;
					}
				}
				else {
					return NetworkConnectionType.NETWORK_CONNECTION;
				}
			}
		}
		else {
			if( isMobileConn ) {
				if( isMobileAvail )  {
					return NetworkConnectionType.NETWORK_CHARGE;
				}
				else {
					return NetworkConnectionType.NETWORK_ERROR;
				}
			}
			else {
				return NetworkConnectionType.NETWORK_CONNECTION;
			}
		}
		
////		if(!(isWifiAvail || isMobileAvail)) {
////			
////			return -2;
////		
////		} else 
//		if(!isWifiAvail) {
//			
//			// wifi 사용불가능이면서
//			
//			if(!isMobileAvail) {
//				
//				// 3G도 사용불가능이면 연결이 되어있지 않습니다. return -1.
//				return -1;
//			
//			} else {
//				
//				// 3G는 연결이 되어있다면 3G는 사용가능. return 1.
//				// 3G사용 경고창을 띄워줘야 한다.
//				return 1;
//			}
//		}return 0;
	}
}
